【小ネタ】ECRパブリックリポジトリでDockerクライアント認証がエラーになってしまう
こんにちは!コンサル部のinomaso(@inomasosan)です。
自分で作成したDockerイメージをECSで起動するために、AWSマネジメントコンソールにて東京リージョンでECRパブリックリポジトリを作成したのですが、Dockerクライアント認証でエラーとなったので原因を調べてみました。
環境
- macOS Big Sur 11.6
- AWS CLI 2.2.35
- Docker Desktop 4.0.0
エラーメッセージ
AWS CLIでデフォルトプロファイル以外を使用するため、--profile
オプションを指定しています。
% aws ecr-public get-login-password --profile hogehoge --region ap-northeast-1 | docker login --username AWS --password-stdin public.ecr.aws/xxxxxxx Could not connect to the endpoint URL: "https://api.ecr-public.ap-northeast-1.amazonaws.com/" Error: Cannot perform an interactive login from a non TTY device
先に結論から
ECRパブリックリポジトリが対応しているサービスエンドポイントは、バージニア北部(us-east-1)のみです。
2021/9/16時点で東京(ap-northeast-1)は対応しておりません。
何故にそんな勘違いしたの?
1つ目はAWSマネージメントコンソールにて、東京リージョンでECRパブリックリポジトリを作成できたように見えたことです。
ちなみにAWS CLIだとECRパブリックリポジトリ作成時に、東京(ap-northeast-1)を指定するとエラーになります。
% aws ecr-public create-repository --repository-name sample-repo --region ap-northeast-1 --profile hogehoge Could not connect to the endpoint URL: "https://api.ecr-public.ap-northeast-1.amazonaws.com/"
2つ目はAWSマネージメントコンソールからプッシュコマンドの表示
した場合のリージョン指定が東京(ap-northeast-1)だったからとなります。
もしかすると、将来的に東京(ap-northeast-1)リージョンもサービスエンドポイントに追加されるのかもしれません。
結局どうしたらいいの?
ECRパブリックリポジトリは、2021/9/16時点でバージニア北部(us-east-1)のみの対応となります。
AWS CLIのコマンド実行は--region us-east-1
を指定しましょう。
ところでパブリックリポジトリにする必要あったの?
ECRをDocker Hubみたいに作ってみたかっただけです…
ちなみにプライベートリポジトリは、東京(ap-northeast-1)のサービスエンドポイントに対応しております。
まとめ
久々にハマったのでブログにしてみました。
どのみちECRにDockerイメージをプッシュするにはCLIが必須なので、リポジトリ作成もCLIで実施した方が良いかもしれません。
この記事が、どなたかのお役に立てば幸いです。それでは!